class UsuariosController < ApplicationController
  skip_before_filter :authenticate, :only => [:new,:create]
  layout 'groupware'
  # GET /usuarios
  # GET /usuarios.xml
  def index
    @usuarios = Usuario.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @usuarios }
    end
  end

  # GET /usuarios/1
  # GET /usuarios/1.xml
  def show
    @usuario = Usuario.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @usuario }
    end
  end

  # GET /usuarios/new
  # GET /usuarios/new.xml
  def new
    @usuario = Usuario.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @usuario }
    end
  end

  # GET /usuarios/1/edit
  def edit
    @usuario = Usuario.find(params[:id])
    @tag1 = @usuario.tags[0]
    @tag2 = @usuario.tags[1]
    @tag3 = @usuario.tags[2]
  end

  # POST /usuarios
  # POST /usuarios.xml
  def create
    @usuario = Usuario.new(params[:usuario])
    @tag1 = getTag(params[:tag_names][:name1])
    @tag2 = getTag(params[:tag_names][:name2])
    @tag3 = getTag(params[:tag_names][:name3])
    
    if !@tag1.nil?      
      @usuario.add_tag(@tag1)
    end
      
    if !@tag2.nil?      
      @usuario.add_tag(@tag2)
    end
      
    if !@tag3.nil?      
      @usuario.add_tag(@tag3)    
    end 
    
    respond_to do |format|
      if @usuario.save
        flash[:notice] = 'Usuario was successfully created.'
        format.html { redirect_to(@usuario) }
        format.xml  { render :xml => @usuario, :status => :created, :location => @usuario }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @usuario.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /usuarios/1
  # PUT /usuarios/1.xml
  def update
    @usuario = Usuario.find(params[:id])
    
    @tag1 = @usuario.tags[0]
    @tag2 = @usuario.tags[1]
    @tag3 = @usuario.tags[2]
    
    #Recuperando os nomes que vem da view atrav�s dos hashs: tag1, tag2 e tag3. 
    #O m�todo ".strip" retira os espa�os em branco das extremidades da string.
    novo_nome_tag1 = params[:tag1][:nome].to_s.strip
    novo_nome_tag2 = params[:tag2][:nome].to_s.strip
    novo_nome_tag3 = params[:tag3][:nome].to_s.strip    
    
    #tratamento da primeira Tag
    #Veja application.rb: ApplicationController#edit_tag_in_holder
    @tag1 = edit_tag_in_holder(@usuario, @tag1, novo_nome_tag1)  
    
    #Tratamento da segunda Tag  
    @tag2 = edit_tag_in_holder(@usuario, @tag2, novo_nome_tag2)    
    
    #Tratamento da terceira Tag
    @tag3 = edit_tag_in_holder(@usuario, @tag3, novo_nome_tag3
    )
    respond_to do |format|
      if @usuario.update_attributes(params[:usuario])
        flash[:notice] = 'Usuario was successfully updated.'
        format.html { redirect_to(@usuario) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @usuario.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /usuarios/1
  # DELETE /usuarios/1.xml
  def destroy
    @usuario = Usuario.find(params[:id])
    @usuario.destroy

    respond_to do |format|
      format.html { redirect_to(usuarios_url) }
      format.xml  { head :ok }
    end
  end
end
